package com.ruoyi.personnel.oa.approve.mapper;

import com.ruoyi.personnel.oa.approve.domain.ApproveDomain;
import com.ruoyi.personnel.oa.approve.domain.ApproveCond;
import com.ruoyi.personnel.oa.approve.domain.ApproveDto;
import com.ruoyi.personnel.oa.approve.domain.ApproveRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 审批
 * 数据层
 */
public interface ApproveMapper {
    /**
     * 根据搜索条件所有审批记录
     * @param cond 搜索条件
     * @return
     */
    List<ApproveDto> selectApproveList(ApproveCond cond);
    List<ApproveDto> selectApproveByRoleId(ApproveCond cond);

    /**
     * 根据编号查询审批记录
     * @param approveId
     * @return
     */
    ApproveDto selectApproveById(long approveId);

    /**
     * 新增审批
     * @param approve
     * @return
     */
    int insertApprove(ApproveDomain approve);

    /**
     * 修改当前审批人
     * @param approve
     * @return
     */
    int updateApprover(ApproveDomain approve);


    /**
     * 删除审批
     * 仅修改删除标志
     * @param approve
     * @return
     */
    int updateApproveDeleteFlag(ApproveDomain approve);

    /**
     * 查询审批的具体审批人信息
     * @param cond
     * @return
     */
    List<ApproveRecord> selectApproveRecord(ApproveCond cond);

    /**
     * 根据编号查询该审批的所有具体审批人信息
     * @param approveId
     * @return
     */
    List<ApproveRecord> selectAllApproveRecordById(Long approveId);

    /**
     * 查询具体的某审批人信息
     * @param approveId
     * @param userId
     * @return
     */
    ApproveRecord selectApproveRecordById(@Param("approveId") Long approveId, @Param("userId") Long userId);

    /**
     * 新增审批人记录
     * @param approveRecord
     * @return
     */
    int insertApproveRecord(ApproveRecord approveRecord);

    /**
     * 审批拒绝
     * @param approve
     * @return
     */
    int refuseApprove(ApproveDomain approve);
}
